extends ColorRect
var delaunator
var 泊松盘采样器
var 激活点集:Array=[]
var 删除点集:Array=[]
var default_font
var default_font_size
var 路径集:Array=[]

func _ready():
	randomize()
	var delaunator_cs=load("res://DelaunatorNode.cs")
	delaunator=delaunator_cs.new()
	泊松盘采样器=泊松盘采样器类.new()
	default_font = ThemeDB.fallback_font
	default_font_size = ThemeDB.fallback_font_size
	生成新地图()
		
func 生成新地图():
	路径集=[]
	激活点集=[]
	删除点集=[]
	var 坐标集=[]
	var 三角形集:Array=[]

	坐标集=泊松盘采样器.采样(Vector2i(1000,1000),50,20)
	size=Vector2i(1000,1000)
	delaunator.计算三角(坐标集)
	var 三角形序号集=delaunator.三角序号
	for i in range(三角形序号集.size()/3):
		var 三角形:Array[Vector2]=[坐标集[三角形序号集[i*3]],坐标集[三角形序号集[i*3+1]],坐标集[三角形序号集[i*3+2]]]
		三角形集.append(三角形)
		
	var 寻路器=GraphFindPath.new()
	寻路器.set_graph(三角形集)
	for i in range(20):
		var path=寻路器.find_path(泊松盘采样器.起始坐标,泊松盘采样器.终点坐标)
		if path.size() > 2:
			路径集.append(path)
			添加激活点(path)
			var 随机删除点=path[randi() % (path.size() - 2) + 1]
			寻路器.remove_vector(随机删除点)
			删除点集.append(随机删除点)
		
func 绘制图标():
	var 图标集:Array[String]=["💀","💀","💀","💰","❓"]
	for 坐标 in 激活点集:
		var 显示位置=坐标+Vector2(-10,5)
		var 图标:String
		if 坐标==泊松盘采样器.起始坐标:
			图标="😀"
		elif 坐标==泊松盘采样器.终点坐标:
			图标="😈"
		else:
			图标=图标集[randi() % (图标集.size())]
		draw_string(default_font,显示位置,图标,HORIZONTAL_ALIGNMENT_CENTER)
		
func 绘制路径():
	for 路径 in 路径集:
		for i in range(路径.size()-1):
			draw_line(路径[i],路径[i+1],Color.BLACK)
	
func 添加激活点(路径:Array):
	for 坐标 in 路径:
		if !激活点集.has(坐标):
			激活点集.append(坐标)
			
func _draw():
	绘制路径()	
	绘制图标()
	
func _on_button_pressed():
	生成新地图()
	queue_redraw()
